#ifndef __CONFIG_H__
#define __CONFIG_H__
#include <string>
#include <map>

#define URL "192.168.1.118"
// #define PORT 3306
#define USER "fyq"
#define PASSWORD "123456"
#define DBNAME "chattable"

#define IPED "192.168.1.124"
#define PORT "6012"

enum _cmd
{
    REGISTER = 0,
    LOGIN,
    CHAT,
    FRIEND,
    UPDATA,
    INDEX,
    QUIT,

};
enum _operate
{
    SEARCH,
    ADD,
    DEL,
    ONL,
    OFFL
};

#define _MYSQL_ERROR -1 // mysql语句错误参数

#define REGISTER_SUCCESS 1
#define REGISTER_USER_EXIST 0
#define LOGIN_SUCCESS 1           // 登录成功
#define LOGIN_PASSWORD_ERROR 2    // 登录密码错误
#define LOGIN_USER_NONEXISTENCE 3 // 用户不存在
#define CHAT_SUCCESS 4            //   消息发送成功
#define CHAT_OFF_ONLINE 5         //  提示好友不在线
#define QUIT_ERROR 6              // 退出失败
#define QUIT_SUCCESS 7
#define UPDATA_SUCCESS 8 //  修改成功
#define INDEX_SUCCESS 9  //
#define INDEX_NULL 10
#define ADDFRIEND_SUCCESS 11
#define ADDFRIEND_ERROR 12

#define BUF_MAX_LEN 1200
#define MAX_EVENTS 1024
#define num 10

using namespace std;
// const string Key = "sswsswsswsswssw";
//  用户结构体
struct User
{
    string loginid;   // 账户
    string nickname;  // 昵称
    string signature; // 个性签名
    string sex;       // 性别 0为男，1为女 默认为空串
    string birthday;  // 生日
    string pthone;    // 电话号
    string email;     // 邮箱
    string headport;  // 头像
    int age;          // 年龄
    string city;      // 城市
};
// 好友结构体
struct Friends
{
    int firendid;     // 好友id
    char *name;       // 备注
    int FriendGroups; // 分组
};
struct newFriends
{
    string loginid;
    string newfriendid;
    string proof;
    string time;
};

// 线上服务查询
class Oline_map
{
private:
    std::map<std::string, int> m_map;
    static Oline_map *map_ptr;

public:
    static Oline_map *getmap()
    {
        if (map_ptr == nullptr)
        {
            map_ptr = new Oline_map();
        }
        return map_ptr;
    }
    ~Oline_map()
    {
        m_map.clear();
    };

    // 插入元素
    void insertm_map(std::string str, int fd)
    {
        m_map[str] = fd;
    }

    // 删除元素
    void detem_map(std::string str)
    {
        m_map.erase(str);
    }
    // 查询元素
    int findm_map(std::string str)
    {
        int i = 0;
        // 句柄不可能存在0
        if ((i = m_map[str]) == 0)
        {
            return -1;
        }

        return i;
    }
};

#endif